#ifndef _SE_TEXTURE_
#define _SE_TEXTURE_

#include "Render/Buffers.h"

namespace SE
{
	class Texture
	{
	public:
		Texture() = default;
		virtual ~Texture() = default;

		virtual U32				getRenderID() const = 0;
		virtual const String&	getPath() const = 0;
		virtual U32				getSize(const U32 dimension) const = 0;
		virtual Boolean			isLoaded() const = 0;

		virtual void bind(const U32 slot) const = 0;

		virtual Boolean operator==(const Texture& other) const = 0;

		static Ref<Texture> Create(const String& filePath);
		static Ref<Texture> Create(const Ref<TextureBuffer>& textureBuffer);
	};

} // !namespace SE

#endif // !_SE_TEXTURE_